User request based content ranking

ABSTRACT

A content recommendation method and system including providing a plurality of content items, a number of items in including the plurality of content items designated as N, symbolically representing each of the N content items as a unique point on a two-dimensional plane, thereby associating an x and y coordinate with each one of the content items, associating, as an initial condition, a weight of zero with each point on the two-dimensional plane, incrementing the weight associated with the unique point associated with one of the N content items each time the one of the N content items is accessed, changing the x and y coordinate of the unique point based on a plurality of user requests for other content items besides the one of the N content items, determining a distance between the unique point and a multiplicity of points corresponding to a multiplicity of other content items, returning at least a first content recommendation to a user, the at least a first content recommendation including a content item associated with a point closer than any other point to a point associated with the content item presently being viewed by the user. Related methods and apparatus are also described.

BACKGROUND OF THE INVENTION

The following patents and patent applications are believed to reflectthe state of the art:

EP 1400903 of Sony United Kingdom Ltd.;

EP 1424640 of Sony United Kingdom Ltd.;

EP 1494144 of Sony United Kingdom Ltd.;

EP 1538838 of Sony Corp.;

EP 1906317 of Sony United Kingdom Ltd.;

U.S. Pat. No. 5,778,362 to Deerwester;

US 2003/0233566 of Gutta, et al.;

US 2004/0003401 of Gutta, et al.;

WO 02/25938 of Koninklijke Philips Electronics N.V.;

WO 2004/047446 of Koninklijke Philips Electronics N.V.;

WO 2007/026357 of NDS Ltd.;

WO 2008/102331 of NDS Ltd.; and

WO 2008/051882 of Music-Strands, Inc.

SUMMARY OF THE INVENTION

There is thus provided in accordance with an embodiment of the presentinvention a content recommendation method including providing aplurality of content items, a number of items including the plurality ofcontent items designated as N, symbolically representing each of the Ncontent items as a unique point on a two-dimensional plane, therebyassociating an x and y coordinate with each one of the content items,associating, as an initial condition, a weight of zero with each pointon the two-dimensional plane, incrementing the weight associated withthe unique point associated with one of the N content items each timethe one of the N content items is accessed, changing the x and ycoordinate of the unique point based on a plurality of user requests forother content items besides the one of the N content items, determininga distance between the unique point and a multiplicity of pointscorresponding to a multiplicity of other content items, returning atleast a first content recommendation to a user, the at least a firstcontent recommendation including a content item associated with a pointcloser than any other point to a point associated with the content itempresently being viewed by the user.

Further in accordance with an embodiment of the present invention uponselection of one of the N content items by the user, calculating a new xand y coordinate for the unique point associated with the one of the Ncontent items selected by the user.

Still further in accordance with an embodiment of the present inventionupon selection of a content item by the user, calculating a new x and ycoordinate for the unique point associated with a previous content itemviewed by the user.

Additionally in accordance with an embodiment of the present inventioncalculating the distance between the x and y coordinate of the uniquepoint associated with the one of the N content items selected by theuser and the new location of the unique point associated with theprevious content item viewed by the user.

Moreover in accordance with an embodiment of the present invention thecalculating the distance includes evaluating, from a first vector,denoted rI{right arrow over (M)}(c) {right arrow over (rIM)}(c), and aand a second vector, denoted rI{right arrow over (M)}(l) the firstvector including the x and y coordinates and the weight (w) associatedwith a user currently viewed content item (c), and the second vectorincluding the x and y coordinates and the weight (w) associated with auser last viewed content item (1), such that

${{rI}\; {\overset{\rightarrow}{M}(a)}} = \begin{bmatrix}{xa} \\{ya} \\{wa}\end{bmatrix}$${{{rI}\; {\overset{\rightarrow}{M}(c)}} = {{\begin{bmatrix}{xc} \\{yc} \\{wc}\end{bmatrix}\mspace{14mu} {and}\mspace{14mu} {rI}\; {\overset{\rightarrow}{M}(l)}} = {{\begin{bmatrix}{xl} \\{yl} \\{wl}\end{bmatrix}{\overset{\rightharpoonup}{rIM}(l)}} = \begin{bmatrix}{xl} \\{yl} \\{wl}\end{bmatrix}}}},$

determining a barycenter rI{right arrow over (M)}(g) such that

${{rI}{\overset{\rightarrow}{M}(g)}} = {\frac{{{wl}*{\overset{\rightarrow}{rIM}(c)}} + {{wc}*{\overset{\rightarrow}{rIM}(l)}}}{{wl} + {wc}} = \begin{bmatrix}{xg} \\{yg} \\{wg}\end{bmatrix}}$

determining an elasticity factor, denoted k, updating rI{right arrowover (M)}(c) and rI{right arrow over (M)}(l) as follows

${{rI}{\overset{\rightarrow}{M}(c)}} = {{\begin{bmatrix}{{xc} + {k\left( {{xg} - {xc}} \right)}} \\{{yc} + {k\left( {{yg} - {yc}} \right)}} \\{{wc} + 1}\end{bmatrix}\mspace{14mu} {and}\mspace{14mu} {rI}{\overset{\rightarrow}{M}(l)}} = \begin{bmatrix}{{xl} + {k\left( {{xg} - {xl}} \right)}} \\{{yl} + {k\left( {{yg} - {yl}} \right)}} \\{{wl} + 1}\end{bmatrix}}$

determining the distance between two points, a and b, corresponding totwo content items as follows given

${{rI}{\overset{\rightarrow}{M}(a)}} = {{\begin{bmatrix}{xa} \\{ya} \\{wa}\end{bmatrix}\mspace{14mu} {and}\mspace{14mu} {rI}{\overset{\rightarrow}{M}(b)}} = \begin{bmatrix}{xb} \\{yb} \\{wb}\end{bmatrix}}$

then distance(a,b)=√{square root over ((xa−xb)²+(ya−yb)²)}{square rootover ((xa−xb)²+(ya−yb)²)}.

Further in accordance with an embodiment of the present invention theelasticity factor, k is equal to 1 (one) if, after a content request,the distance between the two points a and b has changed, and otherwise,if the distance between two points a and b has not changed, k is equalto 0 (zero).

Still further in accordance with an embodiment of the present inventionthe method is performed independently for each one of a plurality ofgiven defined groups, and the incrementing step is performed for adefined group only when a member of the defined group accesses the oneof the N content items.

There is also provided in accordance with another embodiment of thepresent invention a content recommendation method including providing aplurality of content items, a number of items including the plurality ofcontent items designated as N, listing the content items in a contentcatalog, assigning a uniform resource identifier (URI) to each contentitem of the plurality of content items available in the content catalog,establishing an N×N matrix, the matrix designated IM, each element ofthe matrix associated with coordinates IM(n,m), such that IM(n,m)includes a total number of requests for a content item assigned to a URIm from a user who last requested a content item assigned to a URI n,adding the N×N matrix, IM, with its transpose matrix, IM^(T), therebydetermining matrix sIM=IM+IM^(T) determining which content item a useris presently viewing, retrieving a column vector from matrix sIM, thecolumn vector corresponding to the content item presently being viewedby the user, sorting the values of the elements in the retrieved columnvector from greatest value to least value, and returning at least afirst content recommendation to the user, such that the content itemcorresponding to the URI corresponding to the matrix element from matrixsIM including the greatest value in the retrieved column vector includesthe first recommendation.

There is also provided in accordance with still another embodiment ofthe present invention a content recommendation system including aplurality of content items, a number of items including the plurality ofcontent items designated as N, a content catalog including a list of thecontent items, a uniform resource identifier (URI) assigned to eachcontent item of the plurality of content items available in the contentcatalog, an N×N matrix, the matrix designated IM, each element of thematrix associated with coordinates IM(n,m), such that IM(n,m) includes atotal number of requests for a content item assigned to a URI m from auser who last requested a content item assigned to a URI n, a contentranking system which adds the N×N matrix, IM, with its transpose matrix,IM^(T), thereby determining matrix sIM=IM+IM^(T) determines whichcontent item a user is presently viewing, retrieves a column vector frommatrix sIM, the column vector corresponding to the content itempresently being viewed by the user, sorts the values of the elements inthe retrieved column vector from greatest value to least value, andreturns at least a first content recommendation to the user, such thatthe content item corresponding to the URI corresponding to the matrixelement from matrix sIM including the greatest value in the retrievedcolumn vector includes the first recommendation.

There is also provided in accordance with still another embodiment ofthe present invention a content recommendation system including aplurality of content items, a number of items including the plurality ofcontent items designated as N, a content ranking system whichsymbolically represents each of the N content items as a unique point ona two-dimensional plane, thereby associating an x and y coordinate witheach one of the content items, associates, as an initial condition, aweight of zero with each point on the two-dimensional plane, incrementsthe weight associated with the unique point associated with one of the Ncontent items each time the one of the N content items is accessed,changes the x and y coordinate of the unique point based on a pluralityof user requests for other content items besides the one of the Ncontent items, determines a distance between the unique point and amultiplicity of points corresponding to a multiplicity of other contentitems, returns at least a first content recommendation to a user, the atleast a first content recommendation including a content item associatedwith a point closer than any other point to a point associated with thecontent item presently being viewed by the user.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention will be understood and appreciated more fully fromthe following detailed description, taken in conjunction with thedrawings in which:

FIG. 1 is a simplified illustration of a user request based contentranking system constructed and operative in accordance with anembodiment of the present invention;

FIG. 2 is a simplified block diagram illustration of the system of FIG.1 detailing the user request based content ranking system;

FIG. 3 is a depiction of an initialized normalized reduced matrix (rIM),showing positions for 10,000 content items to be ranked by the system ofFIG. 1;

FIG. 4 is a depiction of the rIM matrix positions depicted in FIG. 3after 200,000 content item requests;

FIG. 5 is a depiction of the rIM matrix positions depicted in FIGS. 3and 4 after 350,000 content item requests;

FIG. 6 is a depiction of the rIM matrix positions depicted in FIGS. 3-5after 450,000 content item requests;

FIG. 7 is a depiction of the rIM matrix positions depicted in FIGS. 3-6after 750,000 content item requests; and

FIGS. 8 and 9 are simplified flowcharts of certain methods of operationof the system of FIG. 1.

DETAILED DESCRIPTION OF AN EMBODIMENT

Reference is now made to FIG. 1, which is a simplified illustration of auser request based content ranking system 100 constructed and operativein accordance with an embodiment of the present invention.

Each time a user selects one content item, the user's set top box 200notifies the user request based content ranking system 100. The userrequest based content ranking system 100 determines which user fromamong a plurality of users which are having their content requestsranked issued the user request. Using methods described below, the userrequest based content ranking system 100 updates rankings of contentbased on the user request. The user request based content ranking system100 send the resulting updated ranking information to an informationserver 300. The information server 300 then sends the rankinginformation to at least the user's set top box 200. The rankinginformation is then used by the set top box 200 to present the results,in the form of viewing recommendations, to the user.

The method by which the user request based content ranking system 100updates rankings of content based on the user request is now described.In formulating the method by which the user request based contentranking system 100 updates rankings of content based on the userrequest, it is assumed that a single content provider is utilized as aprimary content provider. Each user is provided with a unique useridentifier which is sent to the content provider along with any userrequests for content so that the content provider can distinguish anyuser accessing its content catalog from any other user accessing itscontent catalog. Additionally, each content item in the contentprovider's content catalog comprises a uniform resource identifier(URI).

The content provider head-end delivers the URI of content in the contentcatalog of the content provider to each user. Each user initiatedcontent request therefore includes the URI of the requested content aswell as the user identifier.

As a consequence of all of the above, it follows that the provider isaware of each request for content access made by each specific user. Toavoid user privacy violation, any logging system maintained by thecontent provider will not store the user specific overall history butwill only maintain for each user-request a one depth URI history.

Accordingly, when an individual user requests content within the contentprovider content catalog, a user-history log is therefore capable ofproviding the following doublet of information:

-   -   the URI of the current content requested; and    -   the URI of the last content requested (if any).

For example and without limiting the generality of the foregoing,consider the following scenario, where there are:

-   -   3 users, designated user1, user2, and user3; and    -   3 content items, designated URI1, URI2, and URI3.

The following sequence of user requests make up the example scenario:

-   -   a. user1 requests content item URI1    -   b. user2 requests content item URI1    -   c. user3 requests content item URI2    -   d. user2 requests content item URI2    -   e. user1 requests content item URI3    -   f. user3 requests content item URI1    -   g. user1 request content item URI2    -   h. user3 requests content item URI2

Given the sequence of user requests for content in steps a-h above, theuser-history-backlog will maintain the following information at eachstep of the sequence:

Steps Backlog a. b. c. d. e. f. g. h. User1 last URI — — — — URI1 URI1URI3 URI3 User1 current URI1 URI1 URI1 URI1 URI3 URI3 URI2 URI2 URIUser2 last URI — — — URI1 URI1 URI1 URI1 URI1 User2 current — URI1 URI1URI2 URI2 URI2 URI2 URI2 URI User3 last URI — — — — — URI2 URI2 URI1User3 current — — URI2 URI2 URI2 URI1 URI1 URI2 URI

A matrix, hereinafter designated IM (as in“Ideal-oriented-link-Matrix”), reflecting user requests, such as thosein the example above, can be constructed as described below. Utilizingthe resulting matrix, the user request based content ranking system 100is able to predict and then recommend content items of interest tousers. As will be explained in detail below, a recommendation will bebased, at least in part, on a calculation of the distance between twocontent items requested: a current content item and a previous contentitem.

Given a plurality of content items, a number of items comprising theplurality of content items designated as N, an ideal-matrix is a N×Nmatrix composed of IM(n,m) elements where n,m are the coordinates ofelements in the IM matrix. For the purpose of the present invention,IM(n,m) is the total number of requests for a content item having URI“m” from a user which last request was for a content item having URI“n”.

For example and without limiting the generality of the foregoing,continuing with the previous example, since there are three contentitems (URI1, URI2, and URI3), IM(n,m) is a 3×3 matrix. A coefficient,IM(uri#N,uri#M) is the number of times a user has requested content item“uri#M” for which the last requested content item was ‘uri#N”. Thus,following steps a-h above, the following steps are taken to populate IM:

${a\text{-}{c.\mspace{14mu} {IM}}} = {{\begin{bmatrix}0 & 0 & 0 \\0 & 0 & 0 \\0 & 0 & 0\end{bmatrix}\mspace{14mu} {every}\mspace{14mu} {{user}'}s\mspace{14mu} {history}\mspace{14mu} {begins}\mspace{14mu} {{empty}.\text{}d.\mspace{14mu} {IM}}} = {\begin{bmatrix}0 & 0 & 0 \\1 & 0 & 0 \\0 & 0 & 0\end{bmatrix}\mspace{14mu} {user}\; 2\mspace{14mu} {goes}\mspace{14mu} {from}\mspace{14mu} {URI}\; 1\mspace{14mu} {to}\mspace{14mu} {URI}\; 2.}}$${e.\mspace{14mu} {IM}} = {\begin{bmatrix}0 & 0 & 0 \\1 & 0 & 0 \\1 & 0 & 0\end{bmatrix}\mspace{14mu} {user}\; 1\mspace{14mu} {goes}\mspace{14mu} {from}\mspace{14mu} {URI}\; 1\mspace{14mu} {to}\mspace{14mu} {URI}\; 3.}$${f.\mspace{14mu} {IM}} = {\begin{bmatrix}0 & 1 & 0 \\1 & 0 & 0 \\1 & 0 & 0\end{bmatrix}\mspace{14mu} {user}\; 3\mspace{14mu} {goes}\mspace{14mu} {from}\mspace{14mu} {URI}\; 2\mspace{14mu} {to}\mspace{14mu} {URI}\; 1.}$${g.\mspace{14mu} {IM}} = {\begin{bmatrix}0 & 1 & 0 \\1 & 0 & 1 \\1 & 0 & 0\end{bmatrix}\mspace{14mu} {user}\; 1\mspace{14mu} {goes}\mspace{14mu} {from}\mspace{14mu} {URI}\; 3\mspace{14mu} {to}\mspace{14mu} {URI}\; 2.}$${h.\mspace{14mu} {IM}} = {\begin{bmatrix}0 & 1 & 0 \\2 & 0 & 1 \\1 & 0 & 0\end{bmatrix}\mspace{14mu} {user}\; 3\mspace{14mu} {goes}\mspace{14mu} {from}\mspace{14mu} {URI}\; 1\mspace{14mu} {to}\mspace{14mu} {URI}\; 2.}$

The IM matrix has the following properties:

-   -   The IM matrix has, by design, a null-diagonal;    -   Each coefficient of the #N^(th) column-vector of IM matrix is        the distance from content URI#N to another content item; and        equivalently    -   Each coefficient of the #N^(th) row-vector of IM matrix is the        distance to content URI#N from another content item.

To ease the result interpretation, a non-oriented version of the IMmatrix is defined, as described below. Those skilled in the art willappreciate that in a non-oriented matrix, going from URIn to URIp isequivalent to going from URIp to URIn.

A matrix, denoted sIM is the link matrix considered to be a request fromcontent A to content B and is equivalent to a request from content B tocontent A. This particular matrix, noted sIM, is the symmetric versionof IM matrix:

sIM=IM+IM ^(T)

In the above example:

${sIM} = \begin{bmatrix}0 & 3 & 1 \\3 & 0 & 1 \\1 & 1 & 0\end{bmatrix}$

A column-vector of the sIM matrix expresses the distances relationshipbetween the current content item and all other content items. Thoseskilled in the art will appreciate that any real-coefficient symmetricmatrix M is invertible such that M multiplied by the inverse of matrix Mequals I, where I is the matrix identity. Thus, sIM, as a symmetricmatrix, can be inverted. Since sIM is invertible, the set of vectorswhich comprise sIM is a “basis”. Thus, given any vector in the vectorspace of sIM, that vector can be decomposed into a linear combination ofthe vectors of the basis. Thus, given that any column of sIM is a vectorof content and URIs which comprises a coefficient representing thedistance from the present content item to another content item; and theset of vectors of sIM is a basis. It follows that any content item (URI)can be decomposed into a linear combination of other content items(URIs), regardless of the distance of one content item to any othercontent items.

High coefficients in the column-vector indicate the most popular contentitems (i.e. the closest) requested from the content item. For instance,continuing to use the above example, after step h, all of the users willhave requested content item URI2. Accordingly, the user request basedcontent ranking system 100 will evaluate the second column-vector of thesIM matrix to determine the popularity of other content items which havebeen requested after a user views content item URI2:

${{sIM}\; \left( {{uri}\; 2} \right)} = \begin{bmatrix}3 \\0 \\1\end{bmatrix}$

Thus, a user who has viewed content item URI2 will receive from the userrequest based content ranking system 100 a recommendation to first viewcontent item URI1 (with a rank of 3), and then a recommendation to viewcontent item URI3 (with a rank of 1). Note that URI2 has a rank of 0,since no requests are received to change from URI2 to URI2.

Thus, given the user-history backlog, the user request based contentranking system 100 retrieves the user_current_content for a specificuser. The user request based content ranking system 100 then retrievesthe column-vector corresponding to the user_current_content from the IMmatrix (or from the corresponding sIM matrix). The user request basedcontent ranking system 100 sorts the coefficients in the retrievedcolumn-vector in order to determine a maximum ranking. The user requestbased content ranking system 100 then proposes to the user a sorted listof ranked content items.

Reference is now made to FIG. 2, which is a simplified block diagramillustration of the system of FIG. 1 detailing the user request basedcontent ranking system 100. Each time a user's set top box 200 sends arequest to a particular content item to the user request based contentranking system 100, a matrix manager 110 determines which at least oneof several matrices 120 require updating. A method described below foroptimizing and generalizing the above method for creating the IM matrixis described below. The method for optimizing and generalizingdescribes, below, how and why there might be several matrices 120requiring updating. The updated at least one of several matrices 120 isstored in a database 130.

A ranking server 140 implements a matrix resealing mechanism (describedbelow) and provides the information server 300 with at least thefollowing data:

-   -   a list of available matrices comprising the at least one of        several matrices 120;    -   matrix information and details for each of the at least one of        several matrices 120; and    -   a list of events distances given a list of events comprised in        the at least one of several matrices 120.

The method of constructing the IM matrix described above results in avery large matrix when there is a large amount of content available inthe content provider's system. Thus, it is desirable to reduce the sizeof the IM matrix.

Furthermore, the IM matrix described above increases in sizedramatically as each new content item is added. Additionally, forexample and without limiting the generality of the foregoing, keepingtrack of 10,000 content items comprised in a content provider's catalogwould involved a 10,000×10,000 IM matrix, and even after 1,000,000user-requests within the system, this IM matrix will only have at least1% of the coefficients of the IM matrix filled. This is due to the IMmatrix being designed, as explained above, to construct a vector-basesgenerator in which all content items can be decomposed into acombination of other content items. Accordingly, it is an implicitassumption of the present invention that the real dimension of an Ncontent item catalog expressed in the IM matrix is largely inferior to Ndimension.

By way of explanation of the assumption that the real dimension of an Ncontent item catalog expressed in the IM matrix is largely inferior to Ndimension, it is appreciated that the more complex a matrix is, thericher the space generated by the matrix is. Therefore, given a matrixM, the sub-space generated by the matrix M is defined by the sub-spaceof the space that contains any vectors generated by M*V where M is thematrix and V is any given vector of the space. It follows that thesub-space is always included in the space, and thus, the rank of thematrix M, dim(M) is always less than N where N is the dimension of thespace. For instance:

The identity matrix I is rich, because the identity matrix requiresevery vector of the basis to be generated (and thus, dim(I)=N); and

Matrix M, for which any coefficient is equal to m is poor, because onlyone vector can generate M (dim(M)=1<<N).

An implicit assumption of any data clustering method, such as theclustering method comprising an embodiment of the present invention isthat given similar content items, the matrix sIM that represents theclustered data will be self-similar. Therefore, in terms of the examplesabove, sIM will be poor, and thus, dim(sIM)<<N.

Therefore, it is possible to construct an embodiment of a matrix inwhich the size of the IM matrix can be drastically reduced. One suchembodiment comprises a possible reduction of the initial IM (N×N) matrixto a reduced rIM(N×3) matrix.

Let each of the N content items of the catalog be represented as a pointon a two-dimensional plane and associate a weight to each point of theplane. The weight associated with each point contains the number of timea specific point-associated content item is accessed. The system of theembodiment described now is initialized so that each content item of thecatalog is assigned a random spatial position and a null-mass, i.e. theweight is equal to zero (or more specifically, there was no previousaccess of the content item). The initialization of the plane and thevarious points disposed thereon is depicted in FIG. 3, which is adepiction of an initialized normalized reduced matrix (rIM), showingpositions for 10,000 content items to be ranked by the system of FIG. 1

The method described herein below automatically sorts the pointsassociated with the N content items. Content items are then recommendedto users in relation to a presently viewed content item.

It can be readily appreciated in light of FIG. 3 that, at initializationand shortly thereafter, recommendations may not really be relevant sincethe content is not organized yet. Over time, the content items (and,correspondingly, points associated with the content items) will then besorted in response to user navigation through the content catalog. As isseen below, the system will become more and more accurate (i.e.relevant) over time.

Continuing with the discussion of how content items and pointsassociated with the content items can be sorted, for each user requestfor a content item, the user request based content ranking system 100determines a barycenter of 2 content items: the previously viewedcontent item; and the presently viewed content item. Content itemorganization and the distribution of the points associated with thecontent items are then updated accordingly.

Specifically, each time a user requests a content item from the catalogof content items, the user history backlog returns for this specificuser:

-   -   user_last_content; and    -   user_current_content.

Let rI{right arrow over (M)}(c) denote a row vector for theuser_current_content.

${{rI}{\overset{\rightarrow}{M}(c)}} = \begin{bmatrix}{xc} \\{yc} \\{wc}\end{bmatrix}$

Where xc and yc correspond, respectively, to the x- and y-coordinates ofthe point associated with the user_current_content, and wc correspondsto the weight associated with the point associated with theuser_current_content.

Similarly, let rI{right arrow over (M)}(l) denote a row vector for theuser_last_content:

${{rI}{\overset{\rightarrow}{M}(l)}} = \begin{bmatrix}{xl} \\{yl} \\{wl}\end{bmatrix}$

Where xl and yl correspond, respectively, to the x- and y-coordinates ofthe point associated with the user_last_content, and wc corresponds tothe weight associated with the point associated with theuser_last_content.

Using rI{right arrow over (M)}(c) and rI{right arrow over (M)}(l), thebarycenter rI{right arrow over (M)}(g) of the user_current_content andthe user_last_content is determined:

${{rI}{\overset{\rightarrow}{M}(g)}} = {\frac{{{{wl} \cdot {rI}}{\overset{\rightarrow}{M}(l)}} + {{{wc} \cdot {rI}}{\overset{\rightarrow}{M}(l)}}}{{wl} + {wc}} = \begin{bmatrix}{xg} \\{yg} \\{wg}\end{bmatrix}}$

Where xg and yg correspond, respectively, to the x- and y-coordinates ofthe point associated with the barycenter rI{right arrow over (M)}(g),and wg corresponds to the weight associated with the point associatedwith the barycenter rI{right arrow over (M)}(g).

In order to add elasticity to the rIM update mechanism, a factor, k, inthe range from [0, 1] is introduced, as follows:

-   -   if k=0 then the dipole last-current is not modified by the        request; and    -   if k=1 then the dipole last-current is aggregated at its        barycenter position.

Those skilled in the art will appreciate that the elasticity is theguarantee that similar content items will converge smoothly withoutaggregating to other content. For a large number of users, and a lowvalue of k, the system will converge slowly. In order for the system toconverge as quickly as possible, k should be set to 1 (one), therebyeliminating elasticity entirely.

The k elastic parameter fixes the responsiveness of the system all alongthe request. It is appreciated that the k elastic parameter can be aconstant value or the k elastic parameter can be a function of wl, wcparameters.

The k elasticity factor depends upon the number of users of the catalogof content items. For a catalog with only a few users, it may bepossible to increase the value of the k elasticity factor in order toincrease the content aggregation and therefore increase more quickly therelevancy level of the recommendations.

Upon a user initiated content request starting from user_last_content toview user_current_content, the vector rI{right arrow over (M)}(c) andrI{right arrow over (M)}(l) are updated from the rIM matrix as follows:

${{rI}{\overset{\rightarrow}{M}(c)}} = {{\begin{bmatrix}{{xc} + {k\left( {{xg} - {xc}} \right)}} \\{{yc} + {k\left( {{yg} - {yc}} \right)}} \\{{wc} + 1}\end{bmatrix}\mspace{14mu} {And}\mspace{14mu} {rI}{\overset{\rightarrow}{M}(l)}} = \begin{bmatrix}{{xl} + {k\left( {{xg} - {xl}} \right)}} \\{{yl} + {k\left( {{yg} - {yl}} \right)}} \\{{wl} + 1}\end{bmatrix}}$

Accordingly, reference is now made to FIGS. 4-7. FIG. 4 is a depictionof the rIM matrix positions depicted in FIG. 3 after 200,000 contentitem requests. FIG. 5 is a depiction of the rIM matrix positionsdepicted in FIGS. 3 and 4 after 350,000 content item requests. FIG. 6 isa depiction of the rIM matrix positions depicted in FIGS. 3-5 aftercontent item 450,000 requests. FIG. 7 is a depiction of the rIM matrixpositions depicted in FIGS. 3-6 after content item 750,000 requests. Inthe depictions of the rIM matrix positions of FIGS. 4-7, the kelasticity factor was set to 10%.

In the example depicted in FIGS. 3-7, as noted above, for a catalog of10,000 content items, approximately 1,000,000 user requests wererandomly simulated. The user requests were simulated to center oncontent items which, broadly speaking, comprised four different thematicgroups of content. The random simulation was developed so that fiftypercent of the time a given user would not move away from whatevercontent item was already selected, and fifty percent of the time theuser would move to a different content item.

It is appreciated that after 300,000 iterations (i.e. content requests,see FIG. 5), structure is appearing within the two-dimensional spacerepresentation of rIM matrix. Furthermore, after 450,000 iterations(i.e. content requests, see FIG. 6), a 4 group simulated structure isappearing in the rIM matrix. Additionally, after 750,000 iterations(i.e. content requests, see FIG. 7), the 4 main simulated groups getconcentrated. It is appreciated that if there were othersub-fine-structures within the content item catalog, thosesub-fine-structures would also appear progressively.

Once the points disposed in the two dimensional plane reach a fairlystable position, such as the position depicted in FIG. 7, user requestbased content ranking system 100 calculates the new distance between the2 content items, user_last_content and user_current_content.

From the rIM matrix N×3 a classic spatial norm can be constructedbetween points associated with each content item. In line with thenotation above, then:

Given

${{{rI}{\overset{\rightarrow}{M}(a)}} = {{\begin{bmatrix}{xa} \\{ya} \\{wa}\end{bmatrix}\mspace{14mu} {and}\mspace{14mu} {rI}{\overset{\rightarrow}{M}(b)}} = \begin{bmatrix}{xb} \\{yb} \\{wb}\end{bmatrix}}},$

then distance(a,b)=√{square root over ((xa−xb)²+(ya−yb)²)}{square rootover ((xa−xb)²+(ya−yb)²)}

It is appreciated that the dimension reduction approach described aboveachieves the following:

-   -   memory consumption is reduced from o(n²) to o(n);    -   insertion of a request in a link matrix complexity order is        o(1); and    -   using BSP-tree (binary space partitioning), calculation of        closest neighbors is o(n*log(n)).

Once the user has selected one content item, content recommendation thenproceeds as follows:

1. Update the content organization (perform a new barycenter calculationand determine the distance between the current and last content) asexplained above; and

2. Recommend contents items based on the (closest) distance calculation:distance(a,b).

One consequence of the mass accumulation of every user's request intothe matrix position over numerous iterations is a kind of gravitationcollapse of the content around the system barycenter. The collapse ismostly due to the fact every user request tends to bring closer theelements of the dipole user_current_content and user_last_content. Thoseskilled in the art will appreciate that the collapse is a consequence ofthe so called long-tail effect, whereby, 90% of requested content itemscomprise only 10% of available content, for instance. Thus, in a systemdriven by actual (human) user requests, less requested content will tendto be negated. Consequently, more frequently requested content will tendto cluster. If we consider the series of requests which is composed byboth structured search-path (for example and without limiting thegenerality of the foregoing, channel surfing from one sporting event toa second sporting event) and random search-path (for example and withoutlimiting the generality of the foregoing, channel surfing from asporting event to a cooking show), the overall system will then collapseinto a spatial singularity after a given number of random search-path.

From an implementation point of view, a singularity will lead contentcoordinates to be very close and the distances between the pointscomprising the singularity approach zero. Depending on theimplementation floating point resolution, rounding artifacts mightoccur.

To prevent formation of a singularity, a strategy which the inventors ofthe present invention have found promising has been to renormalize therIM matrix coordinates to fit a unitary N-sphere object.

For example, and without limiting the generality of the foregoing,consider an N-dimensional rIM matrix after a large number of iterations.Such a rIM matrix has a G system-barycenter rIM(G). Additionally, forevery I content item distance d(rIM(I),rIM(G))<ε.

The resealing mechanism described above will perform a homothetictransform centered on the G system barycenter with a scaling factor of1/ε such as for each I content item:

-   -   distance d(rIM(I),rIM(G))<1

Any individual content item, therefore, must be requested a certainminimum number of times in order to be clustered. For example andwithout limiting the generality of the foregoing, a content item whichis, in an extreme case, never requested or accessed has no reason to beclustered into a larger cluster of content items. Accordingly, anycontent item must pass a certain threshold number of requests, in orderto be clustered. Such a requirement is referred to as ‘marginalrequested content’. To cope with marginal requested content, the systemmight compute ε such that the previous condition is true for almostevery content item.

Those skilled in the art will appreciate that from a geometric point ofview ε is considered the horizon of the system singularity.

It is appreciated that a never-ending collection of user's request intothe user request based content ranking system 100 leads to an infinitememorization process. In some cases the implementation shall take intoaccount the topical nature of user's request. For example and withoutlimiting the generality of the foregoing, some requests are for‘topical’ or ‘fashionable’ items (for instance, requests for MichaelJackson would spike around the time of Jackson's demise. A week afterJackson's demise, the number of requests for content items associatedwith Michael Jackson would dramatically drop). This fashion artifactmight introduce sediment into the user request based content rankingsystem 100 memory; no-longer-relevant association between content mightstill be stored. Accordingly, to counter the never ending increase ofcontent weight, the weight parameter might be defined as:

The number of time a specific content is accessed over a specificperiod.

For example and without limiting the generality of the foregoing, asolution to the weight problem described above could be implementedeasily with an array of weight[1 . . . n]:

-   -   the weight of a content item is the sum of all its weight[1 . .        . n] during the T period;    -   each weight[i] is the number of time a specific content item has        been accessed during one I sub-period; and    -   the number n is defined as being the number of I sub-period in        the T period: nI=T.

The solution proposed above solves the problem of outdated affinitybetween content. The related weight of outdated association isdeprecated by the system over a T period of time.

In some implementations of the present invention the user request basedcontent ranking system 100 associates a profile of attributes to eachuser of the content catalog. For example and without limiting thegenerality of the foregoing, a first user profile might have YOUNG andMAN attributes, when a second user profile might have SENIOR and WOMANattributes.

To encompass the group aspect, some implementations of the presentinvention comprise several defined rIM( ) matrices, where each matches agiven defined group. For example and without limiting the generality ofthe foregoing, a first rIM( ) matrix comprises a matrix for the seniorgroup: rIM(SENIOR). A second rIM( ) matrix comprises a matrix for thewoman or young user's group is rIM(WOMAN∥YOUNG). The implementation ofrIM(WOMAN∥YOUNG) matrix takes into account every request to the systemfrom users that are associated with a user profile having the WOMANattribute or from users that are associated with a user profile havingthe YOUNG attribute. For a given user belonging to n groups, the userrequest based content ranking system 100 will reference related contentitems from each corresponding rIM(1) . . . rIM(n) matrix.

Reference is now made to FIGS. 8 and 9, which are simplified flowchartsof certain methods of operation of the system of FIG. 1. FIGS. 8 and 9are believed to be self-explanatory in light of the above discussion.

It is appreciated that software components of the present invention may,if desired, be implemented in ROM (read only memory) form. The softwarecomponents may, generally, be implemented in hardware, if desired, usingconventional techniques. It is further appreciated that the softwarecomponents may be instantiated, for example: as a computer programproduct; on a tangible medium; or as a signal interpretable by anappropriate computer.

It is appreciated that various features of the invention which are, forclarity, described in the contexts of separate embodiments may also beprovided in combination in a single embodiment. Conversely, variousfeatures of the invention which are, for brevity, described in thecontext of a single embodiment may also be provided separately or in anysuitable subcombination.

It will be appreciated by persons skilled in the art that the presentinvention is not limited by what has been particularly shown anddescribed hereinabove. Rather the scope of the invention is defined bythe appended claims and equivalents thereof:

1. A content recommendation method comprising: providing a plurality ofcontent items, a number of items comprising the plurality of contentitems designated as N; symbolically representing each of the N contentitems as a unique point on a two-dimensional plane, in a processor of aranking server, thereby associating an x and y coordinate with each oneof the content items; associating, as an initial condition, a weight ofzero with each point on the two-dimensional plane; incrementing theweight associated with the unique point associated with one of the Ncontent items each time the one of the N content items is accessed;changing the x and y coordinate of the unique point based on a pluralityof user requests for other content items besides the one of the Ncontent items; determining a distance between the unique point and amultiplicity of points corresponding to a multiplicity of other contentitems; returning at least a first content recommendation to aninformation server, the at least a first content recommendationcomprising a content item associated with a point closer than any otherpoint to a point associated with the content item presently being viewedby the user; and providing the first content recommendation to a user'sset top box from the information server.
 2. The method according toclaim 1 and further comprising, upon selection of one of the N contentitems by the user, calculating a new x and y coordinate for the uniquepoint associated with the one of the N content items selected by theuser.
 3. The method according to claim 1 and further comprising, uponselection of a content item by the user, calculating a new x and ycoordinate for the unique point associated with a previous content itemviewed by the user.
 4. The method according to claim 1 and furthercomprising calculating the distance between the x and y coordinate ofthe unique point associated with the one of the N content items selectedby the user and the new location of the unique point associated with theprevious content item viewed by the user.
 5. The method according toclaim 1 and wherein the calculating the distance comprises: evaluating,from a first vector, denoted rI{right arrow over (M)}(c), and a secondvector, denoted rI{right arrow over (M)}(l) the first vector comprisingthe x and y coordinates and the weight (w) associated with a usercurrently viewed content item (c), and the second vector comprising thex and y coordinates and the weight (w) associated with a user lastviewed content item (I), such that:${{rI}{\overset{\rightarrow}{M}(a)}} = \begin{bmatrix}{xa} \\{ya} \\{wa}\end{bmatrix}$${{{rI}{\overset{\rightarrow}{M}(c)}} = {{\begin{bmatrix}{xc} \\{yc} \\{wc}\end{bmatrix}\mspace{14mu} {and}\mspace{14mu} {rI}{\overset{\rightarrow}{M}(l)}} = {{\begin{bmatrix}{xl} \\{yl} \\{wl}\end{bmatrix}\mspace{14mu} {\overset{\rightarrow}{rIM}(l)}} = \begin{bmatrix}{xl} \\{yl} \\{wl}\end{bmatrix}}}};$ determining a barycenter rI{right arrow over (M)}(g)such that:${{rI}{\overset{\rightarrow}{M}(g)}} = {\frac{{{wl}*{\overset{\rightarrow}{rIM}(c)}} + {{wc}*{\overset{\rightarrow}{rIM}(l)}}}{{wl} + {wc}} = \begin{bmatrix}{xg} \\{yg} \\{wg}\end{bmatrix}}$ determining an elasticity factor, denoted k; updatingrI{right arrow over (M)}(c) and rI{right arrow over (M)}(l) as follows:${{rI}{\overset{\rightarrow}{M}(c)}} = {{\begin{bmatrix}{{xc} + {k\left( {{xg} - {xc}} \right)}} \\{{yc} + {k\left( {{yg} - {yc}} \right)}} \\{{wc} + 1}\end{bmatrix}\mspace{14mu} {and}\mspace{14mu} {rI}{\overset{\rightarrow}{M}(l)}} = \begin{bmatrix}{{xl} + {k\left( {{xg} - {xl}} \right)}} \\{{yl} + {k\left( {{yg} - {yl}} \right)}} \\{{wl} + 1}\end{bmatrix}}$ determining the distance between two points, a and b,corresponding to two content items as follows: given${{rI}{\overset{\rightarrow}{M}(a)}} = {{\begin{bmatrix}{xa} \\{ya} \\{wa}\end{bmatrix}\mspace{14mu} {and}\mspace{14mu} {rI}{\overset{\rightarrow}{M}(b)}} = \begin{bmatrix}{xb} \\{yb} \\{wb}\end{bmatrix}}$ then distance(a,b)=√{square root over((xa−xb)²+(ya−yb)²)}{square root over ((xa−xb)²+(ya−yb)²)}.
 6. Themethod according to claim 5 and wherein the elasticity factor, k isequal to 1 (one) if, after a content request, the distance between thetwo points a and b has changed, and otherwise, if the distance betweentwo points a and b has not changed, k is equal to 0 (zero).
 7. A contentrecommendation method comprising: performing the method of claim 1independently for each one of a plurality of given defined groups,wherein the incrementing step of claim 1 is performed for a definedgroup only when a member of the defined group accesses the one of the Ncontent items.
 8. A content recommendation method comprising: providinga plurality of content items, a number of items comprising the pluralityof content items designated as N; listing the content items in a contentcatalog; assigning a uniform resource identifier (URI) to each contentitem of the plurality of content items available in the content catalog;establishing an N×N matrix, in a processor of a ranking server, thematrix designated IM, each element of the matrix associated withcoordinates IM(n,m), such that IM(n,m) comprises a total number ofrequests for a content item assigned to a URI m from a user who lastrequested a content item assigned to a URI n; adding the N×N matrix, IM,with its transpose matrix, IM^(T), thereby determining matrixsIM=IM+IM^(T); determining which content item a user is presentlyviewing; retrieving a column vector from matrix sIM, the column vectorcorresponding to the content item presently being viewed by the user;sorting the values of the elements in the retrieved column vector fromgreatest value to least value; returning at least a first contentrecommendation to an information server, such that the content itemcorresponding to the URI corresponding to the matrix element from matrixsIM comprising the greatest value in the retrieved column vectorcomprises the first recommendation; and providing the first contentrecommendation to a user's set top box from the information server.
 9. Acontent recommendation system comprising: a plurality of content items,a number of items comprising the plurality of content items designatedas N; a content ranking system which: symbolically represents each ofthe N content items as a unique point on a two-dimensional plane, in aprocessor of a ranking server, thereby associating an x and y coordinatewith each one of the content items; associates, as an initial condition,a weight of zero with each point on the two-dimensional plane;increments the weight associated with the unique point associated withone of the N content items each time the one of the N content items isaccessed; changes the x and y coordinate of the unique point based on aplurality of user requests for other content items besides the one ofthe N content items; determines a distance between the unique point anda multiplicity of points corresponding to a multiplicity of othercontent items; returns at least a first content recommendation to aninformation server, the at least a first content recommendationcomprising a content item associated with a point closer than any otherpoint to a point associated with the content item presently being viewedby the user; and provides the first content recommendation to a user'sset top box from the information server.
 10. A content recommendationsystem comprising: a plurality of content items, a number of itemscomprising the plurality of content items designated as N; a contentcatalog comprising a list of the content items; a uniform resourceidentifier (URI) assigned to each content item of the plurality ofcontent items available in the content catalog; an N×N matrix, in aprocessor of a ranking server, the matrix designated IM, each element ofthe matrix associated with coordinates IM(n,m), such that IM(n,m)comprises a total number of requests for a content item assigned to aURI m from a user who last requested a content item assigned to a URI n;a content ranking system which: adds the N×N matrix, IM, with itstranspose matrix, IM^(T), thereby determining matrix sIM=IM+IM^(T);determines which content item a user is presently viewing; retrieves acolumn vector from matrix sIM, the column vector corresponding to thecontent item presently being viewed by the user;